[XEND] Checks to make sure the image type is valid in configuration
authorAlastair Tse <atse@xensource.com>
Thu, 30 Nov 2006 14:51:46 +0000 (14:51 +0000)
committerAlastair Tse <atse@xensource.com>
Thu, 30 Nov 2006 14:51:46 +0000 (14:51 +0000)
The 'builder' (eg. image type) should either be 'hvm' or 'linux' as
image.py only supports these at the moment.

Signed-off-by: Alastair Tse <atse@xensource.com>
tools/python/xen/xend/XendConfig.py

index df124c06ca6bb629338efe1a005e41fb4165e3b0..e4143cc3900cb5d70f31fdf717e60cdf7b646cbc 100644 (file)
@@ -328,9 +328,14 @@ class XendConfig(dict):
                 raise XendConfigError('Invalid event handling mode: ' +
                                       event)
 
+    def _builder_sanity_check(self):
+        if self['builder'] not in ('hvm', 'linux'):
+            raise XendConfigError('Invalid builder configuration')
+
     def validate(self):
         self._memory_sanity_check()
         self._actions_sanity_check()
+        self._builder_sanity_check()
 
     def _dominfo_to_xapi(self, dominfo):
         self['domid'] = dominfo['domid']
@@ -665,7 +670,14 @@ class XendConfig(dict):
         officially supported by the Xen API but is required for
         the rest of Xend to function.
         """
-        pass
+
+        # populate image
+        self['image']['type'] = self['builder']
+        if self['builder'] == 'hvm':
+            self['image']['hvm'] = {}
+            for xapi, cfgapi in XENAPI_HVM_CFG.items():
+                self['image']['hvm'][cfgapi] = self[xapi]
+            
 
     def _get_old_state_string(self):
         """Returns the old xm state string.
@@ -868,13 +880,14 @@ class XendConfig(dict):
             
             elif dev_type in ('vbd', 'tap'):
                 if dev_type == 'vbd':
-                    dev_info['uname'] = cfg_xenapi.get('image', None)
+                    dev_info['uname'] = cfg_xenapi.get('image', '')
                     dev_info['dev'] = '%s:disk' % cfg_xenapi.get('device')
                 elif dev_type == 'tap':
                     dev_info['uname'] = 'tap:qcow:%s' % cfg_xenapi.get('image')
                     dev_info['dev'] = '%s:disk' % cfg_xenapi.get('device')
                     
                 dev_info['driver'] = cfg_xenapi.get('driver')
+                dev_info['VDI'] = cfg_xenapi.get('VDI', '')
                     
                 if cfg_xenapi.get('mode') == 'RW':
                     dev_info['mode'] = 'w'